javascript
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function (n) {
const cache = new Map()
let sum = n
const cal = (num) => {
let arr = [...(num + '')]
let sum = arr.reduce((pre, cur) => pre + cur ** 2, 0)
return sum
}
while (sum !== 1) {
sum = cal(sum)
if (cache.has(sum)) {
return false
} else {
cache.set(sum, true)
}
}
return true
}